Diese Datei beschreibt wie man verschlsselte Updatedateien erzeugt.

1.) starte AVRootloader.exe im Ordner \AVRootloader\Windows\
2.) drcke "make Password"
3.) whle im Dateidialog die Datei "AVRootloader.asm" aus
4.) entscheide ob das per Zufall erzeugte Passwort in AVRootloader.ini gespeichert werden soll.
    Das erzeugte Passwort wird auch in die Zwischenablage kopiert und kann so anderenorts gespeicheret werden.
    Wird das Passwort in AVRootloader.ini gespeichert so wird es beim Flashen von dort geladen falls ntig
    Wird das Passwort nicht in AVRootloader.ini gespeichert so fragt AVRoorloader.exe es jedesmal ab.
    Mchte man verschlselte Offlineupdates fr Kunden erzeugen so darf das Passwort natrlich nicht in AVRootoader.ini gespeichert werden !!
5.) ffne mit AVRStudio die Datei AVRootloader.aps
6.) konfiguriere AVRootloader.asm, setze UseCrypt=1 und UseCryptFLASH=1 und UseCryptE2=1 und UseSRAM=0. Das ist die sicherste Konfiguration.
    Mchtest du das man den EEPROM nicht auslesen kann so setze UseE2Read=0.
    Mchtest du das man den EEPROM auslesen und schreiben kann ohne Verschlsselung so setze UseE2Write=1, UseE2Read=1 und UseCryptE2=0.
    Mchtest du das man den EEPROM auslesen aber nur verschlsselt schreiben kann so setze UseE2Write=1, UseE2Read=1 und UseCryptE2=1.
    Wenn du UseSRAM=1 und/oder UseCryptFLASH=0 setzt so kann ein Angreifer die Sicherheit umgehen indem er diese Funktionen benutzt um
    eine eigene Anwendung unverschlsselt zu flashen und mit Hilfe dieser Anwendung das Passwort in BootKey: ausliest.
    Wichtig ist also das man UseSRAM=0 und UseCryptFASH=1 setzt wenn man es sicher haben mchte.
7.) das vorher erzeugte Passwort wurde schon in Bootkey: eingetragen.
8.) kompiliere das Projekt wie in AVRootloader.txt beschrieben
9.) flashe AVRootloader.hex in den AVR

10.) starte AVRootloader.exe und konfiguriere ale Parameter (COM Port, Baudrate etc.pp.)
11.) whle im Eingabefeld "FLASH" eine HEX Datei die kompiliert werden soll
12.) whle im Eingabefeld "EEPROM" eine EEP Datei die ins EEPROM gespeichert werden soll
13.) drcke Schalter "compile"
14.) whle im Dateidialog den Namen und Speicherort der ACY Datei aus
15.) falls der Passwortdialoig erscheint so gebe das vorher erzeugte Passwort ein, zb. Paste ber die Zwischenablage
     das Passwort sollte in HEXadezmal eingegeben werden, Kommatas oder hnlich Sonderzeichen werden ignoriert, die Buchstaben A-F knnen auch klein geschrieben werden
16.) drcke Ok und das Preogram erzeugt eine ACY Datei die alle Daten der FLASH/EEPROM Dateien verschlsselt enthlt
17.) nun testen wir indem wir im Eingabefeld "FLASH" diese ACY Datei auswhlen und den Button "Program" drcken
     die Eingabe im Edit "EEPROM" ist dabei irrelevant.
18.) Wird bei einem Kunden AVRootloader.exe so installiert das in AVRootloader.ini bei [System] -> Password= nichts drinnen steht so kann man eine
     verschlsselte ACY-Datei dem Kunden ausliefern und diese kann er auf den AVR mit Bootloader einspielen.
19.) man kann auch ACY-Dateien unverschlsselt erzeugen. Dazu darf der Bootloader eben keine Entschlsselungsfunktion aktiviert haben.
20.) Die verschlsselten ACY-Dateien laufen nur auf dem Bootloader der beim Erzeugen der ACY-Dateien verbunden war. Eine ACY-Datei enthlt also
     die Informationen aus BootInfo: -> die Signatur des AVRs, die Version des Bootloaders und die Anzahl der FLASH Pages des Bootloaders.
     Bei verschlsselten ACY-Dateien liegen diese Informationen im ersten verschlsselten 16 Bytes Datenblock der an den Bootlaoder gesendet wird.
     Der Bootloader entschlsselt diesen 1. Datenblock und vergleicht diese Daten dann mit seiner BootInfo: und den ersten 4. Bytes des BootKey:
     Die ersten 8 Bytes dieses 1. Datenblockes bestehen immmer aus Zufallsdaten. Durch den verwendeten CBC Feedback Modus bei der Verschlsselung 
     propagieren sich diese 8 Zufallsbytes durch alle nachfolgenden verschlsselten Datenblcke. Dies verhindert effizient verschiedene kryptographische
     Angriffe wie zb. Choosen Plain Text Attack, Replyattack, Diffentielle Kryptoanalyse, Blockvertauschungen, Blockersetzungen.
     Die Speicheradressen der verschlsselten FLASH/EEPROM Daten werden ebenfalls nur verschlsselt gespeichert und bertragen. Dies erfolgt bei solchen
     Datenpacketen im letzten 8 Bytes Datenblock. In diesem Datenblock liegen verschlsselt die ersten 4 Bytes des Passwortes als Signatur,
     1 Byte Grenkorrektur des Datenblockes das von 0 bis 7 gehen kann, und 3 Bytes Addresse an denen diese Daten im FLASH/EEPROM gespeichert werden sollen.
     Die ersten 4 Bytes werden mit dem internen ersten 4 Bytes des BootKey: verglichen und dienen als Signatur. Sollte bei der Datenbertragung oder durch Manipulation
     in den Daten Modifikationen aufgetreten sein so wird diese Signatur nicht mehr stimmen knnen. Der verwendete CBC-Doppel-Feedback-Modus des Ciphers arbeitet also
     wie eine 64Bit Checksumme mit 32Bit Prfcode.


Gru Hagen
